import Vue from 'vue';
import Cookies from 'js-cookie';
import 'normalize.css/normalize.css'; // a modern alternative to CSS resets
import Element from 'element-ui';
import './styles/element-variables.scss';
// import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持，无需额外引入，请删除该依赖
import '@/styles/index.scss'; // global css
import App from './App';
import store from './store';
import router from './router';
// import './icons'; // icon
import './permission'; // permission control
import './utils/error-log'; // error log
import filters from '@/filters/mixin'; // global filters
import Api from '@/api/index';
import VueCompositionAPI from '@vue/composition-api';
import config from '@/config';
import initMixin from '@/utils/initMixin';

Vue.use(VueCompositionAPI);
Vue.use(Api);
Vue.use(Element, {
  size: Cookies.get('size') || 'medium' // set element-ui default size
  // locale: enLang // 如果使用中文，无需设置，请删除
});
Vue.use(config);
Vue.use(initMixin);
Vue.use(filters);

Vue.prototype.$messageBox = Element.MessageBox;
Vue.prototype.$bus = new Vue();
Vue.config.productionTip = false;
Vue.config.errorHandler = function(err, vm, info) {
  try {
    let errorInfo = { fn: '', page: '', error: '', key: '' };
    Object.assign(errorInfo, {
      function: info,
      page: vm.$options._componentTag,
      error: err.message,
      key: 'errorHandler'
    });
    gio('track', 'error', errorInfo);
    console.log('error', err.stack);
  } catch (error) {}
};

new Vue({
  el: '#app',
  router,
  store,
  render: (h) => h(App)
});
